package cn.lliiooll.cmd;

import cn.lliiooll.Mentor;
import cn.lliiooll.mt.Confirm;
import cn.lliiooll.mt.MentorPlayer;
import cn.lliiooll.mt.ShiFu;
import cn.lliiooll.mt.TuDi;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import java.io.File;

public class MainCmd implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
        Mentor m = Mentor.m;
        if(!(commandSender instanceof Player)){
            if(args.length == 0){
                if(!(new File(Mentor.m.getDataFolder(),"config.yml").exists())){
                    Mentor.m.info("没有检测到配置,释放ing...");
                    Mentor.m.saveDefaultConfig();
                }else{
                    Mentor.m.info("检测到配置,加载ing...");
                    Mentor.m.reloadConfig();
                }
                m.info("配置重载成功");
                return true;
            }
        }
        Player p = (Player) commandSender;
        if(args.length == 0){
            if(!p.hasPermission(Mentor.getPluginName() + "use")){
                m.error("你没有足够的权限",p);
                return true;
            }
            m.info("&e==========&c&l[&bMentor&c&l]&e==========",p);
            m.info("    &e版本&7:&b" + m.getPluginVersion() ,p);
            m.info("    &e作者&7by &blliiooll",p);
            m.info("    &b要查看帮助，请使用/mt help",p);
            m.info("&e==========&c&l[&bMentor&c&l]&e==========",p);
            return true;
        }
        switch (args[0]){
            default:
                m.warn("未知指令.请输入/mt help取得帮助",p);
                return true;
            case "help":
                m.info("&b/mt help          &7-&b>&e获取插件的帮助列表",p);
                m.info("&b/bs               &7-&b>&e拜一个师傅",p);
                m.info("&b/st               &7-&b>&e收一个徒弟",p);
                return true;
            case "jc":
                if(args.length == 1){
                    m.error("玩家名不能为空",p);
                    return true;
                }
                if(Bukkit.getPlayer(args[1]) == null){
                    if(Bukkit.getOfflinePlayer(args[1]) != null){
                        m.error("玩家未在线",p);
                        return true;
                    }
                    m.error("玩家不存在",p);
                    return true;
                }
                if(new TuDi(p).has()){
                    m.warn("你真的要解除师徒关系吗?在10秒内输入/mt confirm确认",p);
                    Confirm.add(p.getUniqueId(),new Object[]{"jctd", 10});
                    return true;
                }
                if(new ShiFu(p).has()){
                    m.warn("你真的要解除师徒关系吗?在10秒内输入/mt confirm确认",p);
                    Confirm.add(p.getUniqueId(),new Object[]{"jcsf", 10});
                }
                return true;
            case "confirm":
                //在这里实现确认
                /**
                 *  目前bug: 不能接受请求
                 */
                Object[] o = new Confirm().get(p.getUniqueId());
                if(o == null){
                    m.warn("你没有待处理的请求",p);
                    return true;
                }
                MentorPlayer mp;
                if(o[0].equals("jctd")){
                    m.info("解除成功",p);
                    mp = new TuDi(p);
                    mp.del();
                    m.info("已解除师徒关系",p);
                    return true;
                }
                if (o[0].equals("jcsf")){
                    m.info("解除成功",p);
                    mp=new ShiFu(p);
                    mp.del();
                    m.info("已解除师徒关系",p);
                    return true;
                }
                if(o[0].equals("bs")){
                    m.info("拜师成功",p);
                    mp=new TuDi(p);
                    mp.add((Player) o[2]);
                    Confirm.del(p.getUniqueId());
                    return true;
                }
                if(o[0].equals("st")){
                    m.info("收徒成功",p);
                    mp=new ShiFu(p);
                    mp.add((Player) o[2]);
                    Confirm.del(p.getUniqueId());
                    return true;
                }
                m.info("无效的类型",p);
                return true;
        }



        //return false;
    }
}
